/*
 *https://www.luogu.com.cn/problem/P1135
 *洛谷P1135. 奇怪的电梯
 *medium 吴朝泽 2024.12.3
 *BFS广度优先搜索
*/

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
int n, a, b, arr[410];
bool vis[410];     //记录该楼层是否遍历过

int main()
{
    cin >> n >> a >> b;
    memset(vis, 0, sizeof(vis));
    for(int i = 1; i <= n; ++i)   //从 1 开始遍历方便后面加减楼层
    {
        cin >> arr[i];
    }
    queue<int> f;
    queue<int> s;
    f.push(a);
    s.push(0);
    vis[a] = 1;
    while(!f.empty())
    {
        int t = f.front() + arr[f.front()];    //电梯上行，加上 arr 数组中当前楼层的下标对应的元素值
        if(t <= n && vis[t] != 1)
        {
            f.push(t);
            s.push(s.front() + 1);
            vis[t] = 1;
        }
        t = f.front() - arr[f.front()];        //电梯下行
        if(t >= 1 && vis[t] != 1)
        {
            f.push(t);
            s.push(s.front() + 1);
            vis[t] = 1;
        }
        if(f.front() == b)                     //题目求最少次数，如果到达了指定的楼层就输出，结束程序
        {
            cout << s.front() << endl;
            return 0;
        }
        f.pop();
        s.pop();
    }
    cout << -1 << endl;              //队列为空时还没到达指定楼层就输出 -1
    return 0;
}
